/*
 *  Rayon.h
 *  Ray Tracing
 *
 *  Created by Jean-Marc Comby + Romain Dequesne on Sun Apr 11 2004.
 *  Copyright (c) 2004. All rights reserved.
 *
 */
#ifndef _RAYON_H
#define _RAYON_H

#include "Algebre/Vecteur.hpp"
#include "Algebre/Coord.hpp"

/**
 * Le rayon est une demi-droite : il représente la trajectoire
 * (inverse) de la lumière. Inverse car le Rayon est originaire de la
 * caméra et se dirige vers la scène.
 *
 * Un Rayon a une origine (représentée par une instance de Coord) et
 * une direction (représentée par une instance de VecteurU).
 *
 * @author Jean-Marc Comby + Romain Dequesne
 * @author Johan "Solo" Luisier
 *
 * @date 11 Avril 2004
 */
class Rayon
{	
 public:
  Rayon(const Coord& o = Coord(), const VecteurU& v = VecteurU()); // rayon definit avec origine + vecteur u
  Rayon(const Coord&, const Coord&); // rayon definit avec 2 points
  Rayon(const Vecteur&, const Vecteur&);
  // Destructeur
  virtual ~Rayon();
	
  // Methode get
  const Coord& origine() const;
  const VecteurU& direction() const;
	
 private:
  /**
   * Origine du rayon.
   */
  Coord Origine;
  /**
   * Direction du rayon.
   */
  VecteurU Direction;
};

#endif
